# 主力排名数据爬虫运行脚本
# 专门用于运行主力排名数据爬取

import sys
import os
import io

# 确保中文输出正常
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')

# 获取当前脚本所在目录（兼容PyInstaller打包后的情况）
if hasattr(sys, '_MEIPASS'):
    # 打包后的运行路径
    current_dir = os.path.dirname(os.path.abspath(sys.executable))
    # 添加打包后的路径到Python路径
    sys.path.append(current_dir)
    # 将配置文件复制到当前目录（如果不存在）
    config_src = os.path.join(sys._MEIPASS, 'config.py')
    config_dst = os.path.join(current_dir, 'config.py')
    if os.path.exists(config_src) and not os.path.exists(config_dst):
        try:
            with open(config_src, 'rb') as fsrc, open(config_dst, 'wb') as fdst:
                fdst.write(fsrc.read())
            print(f"配置文件已复制到: {config_dst}")
        except Exception as e:
            print(f"复制配置文件时出错: {e}")
else:
    # 正常运行时的路径
    current_dir = os.path.dirname(os.path.abspath(__file__))
    # 添加当前目录到Python路径
    sys.path.append(current_dir)

# 确保输出目录存在
output_dir = os.path.join(current_dir, 'output')
if not os.path.exists(output_dir):
    try:
        os.makedirs(output_dir)
        print(f"已创建输出目录: {output_dir}")
    except Exception as e:
        print(f"创建输出目录时出错: {e}")

# 导入模块（在设置好路径后）
from main_force_crawler import MainForceRankCrawler

def main():
    """主运行函数"""
    print("主力排名数据爬虫启动...")
    print("=" * 50)
    
    try:
        crawler = MainForceRankCrawler()
        result = crawler.run()
        
        if result > 0:
            print("=" * 50)
            print("主力排名数据爬取任务成功完成！")
            print(f"共获取 {result} 条主力排名数据")
        else:
            print("=" * 50)
            print("主力排名数据爬取任务完成，但未获取到数据")
            print("请检查目标URL是否正确，或页面结构是否有变化")
            
    except KeyboardInterrupt:
        print("\n用户中断程序")
    except Exception as e:
        print(f"程序运行出错: {e}")
        import traceback
        traceback.print_exc()
        
    input("按回车键退出...")

if __name__ == "__main__":
    main()